02. `mold` y reinterpretación
mold permite describir varias vistas de una misma región:
mold WordView:
whole: uint32
bytes: byte[4]
func first_byte(value: WordView) byte:
return value.bytes[0]
Los campos comparten almacenamiento. Escribir whole y leer después bytes
reinterpreta los mismos bits; no es una conversión de tipos ni una copia.
Si un campo contiene una dirección, la procedencia obtenida al leerla no queda
demostrada por el compilador. Desreferenciar ese puntero requiere una función
@unsafe y un contrato explícito sobre la validez de la dirección:
mold PointerBits:
address *: uint8
@unsafe
func read_address(value: PointerBits) uint8:
return (value.address)
Usa mold para formatos binarios y registros compatibles, no para simular
conversiones seguras entre tipos no relacionados.